package com.odontosis.relatorio.pagamentoperiodo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.odontosis.entidade.Pagamento;
import com.odontosis.entidade.Servico;
import com.odontosis.entidade.TipoServico;
import com.odontosis.ioc.ContainerIoc;
import com.odontosis.service.ServicoService;
import com.odontosis.util.StringUtilsOdontosis;
import com.odontosis.view.OdontosisCadastroForm;

/**
 * 
 * @author pablo
 *
 */
public class FormRelatorioPagamento extends OdontosisCadastroForm {
	
	private String mesInicial;
	
	private String anoInicial;
	
	private String mesFinal;
	
	private String anoFinal;
	
	private String paciente;
	
	public List<String> erros;
	
	

	public List<String> getErros() {
		return erros;
	}

	public void setErros(List<String> erros) {
		this.erros = erros;
	}

	
	public String getMesInicial() {
		return mesInicial;
	}

	public String getAnoInicial() {
		return anoInicial;
	}

	public String getMesFinal() {
		return mesFinal;
	}

	public String getAnoFinal() {
		return anoFinal;
	}

	public void setMesInicial(String mesInicial) {
		this.mesInicial = mesInicial;
	}

	public void setAnoInicial(String anoInicial) {
		this.anoInicial = anoInicial;
	}

	public void setMesFinal(String mesFinal) {
		this.mesFinal = mesFinal;
	}

	public void setAnoFinal(String anoFinal) {
		this.anoFinal = anoFinal;
	}
	
	
	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		ActionMessages messages = new ActionMessages();

		if (StringUtilsOdontosis.isVazia(getMesInicial()) && StringUtilsOdontosis.isVazia(getAnoInicial())) {
			messages.add("mes/ano",
					new ActionMessage("O campo Mês/Ano inicial é obrigatório."));
		}
		
		if (StringUtilsOdontosis.isVazia(getMesFinal()) && StringUtilsOdontosis.isVazia(getAnoFinal())) {
			messages.add("mes/ano",
					new ActionMessage("O campo Mês/Ano final é obrigatório."));
		}
		
		
		if(messages.isEmpty()){
			Integer mesInicial = Integer.parseInt(getMesInicial()); 
			Integer anoInicial = Integer.parseInt(getAnoInicial());
			
			Integer mesFinal = Integer.parseInt(getMesFinal()); 
			Integer anoFinal = Integer.parseInt(getAnoFinal());
			
			if(mesInicial <= 0 || mesInicial > 12){
				messages.add("mes/ano",
						new ActionMessage("O campo Mês/Ano inicial é inválido."));
			}
			
			if(mesFinal <= 0 || mesFinal > 12){
				messages.add("mes/ano",
						new ActionMessage("O campo Mês/Ano final é inválido."));
			}
			
			if(messages.isEmpty()){
				if((mesInicial > mesFinal && anoInicial.intValue() == anoFinal.intValue()) || anoInicial.intValue() > anoFinal.intValue()){
					messages.add("mes/ano",
							new ActionMessage("O Mês/Ano inicial deve ser menor ou igual ao Mês/Ano final."));
				}
			}
		}
		

		if (messages.size() > 0 && getMetodo() != null) {
			errors.add(messages);
			erros = new ArrayList<String>();
			for (Iterator iterator = messages.get(); iterator.hasNext();) {
				ActionMessage string = (ActionMessage) iterator.next();
				erros.add(string.getKey());
			}
			request.setAttribute("mensagens", erros);
			return errors;
		} else {
			request.setAttribute("mensagens", null);
			return super.validate(mapping, request);
		}
	}

	public String getPaciente() {
		return paciente;
	}

	public void setPaciente(String codigoProcedimento) {
		this.paciente = codigoProcedimento;
	}

	
	
	
	

}
